P1163 银行贷款 - 洛谷
银行贷款
题目描述
当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。
输入格式
三个用空格隔开的正整数。
第一个整数表示贷款的原值
输出格式
一个实数,表示该贷款的月利率(用百分数表示),四舍五入精确到
数据保证答案不超过
样例 #1
样例输入 #1
1000 100 12
样例输出 #1
2.9
提示
数据保证,
bool check(double mid)
{
double sumt = w0;
for (int i = 1; i <= m; i++)
sumt = sumt + sumt * mid - w;
if (sumt > 0)
return true;
return false;
}
可以将 check
省略这样写:
#include <bits/stdc++.h>
using namespace std;
double w, w0, m, l, r, sum;
int main()
{
ios::sync_with_stdio(false), cin.tie(nullptr);
cin >> w0 >> w >> m;
l = 0,r = 300;
while (r-l > 1e-5)
{
bool ok = false;
double mid = (l + r) / 2,sumt = w0;
for (int i = 1; i <= m; i++)
sumt = sumt + sumt * mid - w;
if (sumt > 0) ok = true;
if (ok) r = mid;
else l = mid;
}
cout << setprecision(1) << fixed << l*100 << '\n';
}